Skip to content

Notes: rebuild the harness on Linux, and record round 15 - #219

Merged
mgravell merged 1 commit into
mainfrom
harness-round15
Sep 11, 2026
Merged

mgravell merged 1 commit into
mainfrom
harness-round15

Conversation

@mgravell

Copy link
Copy Markdown
Member

Notes only. This is the pre-release verification run — the "has anything regressed?" check before shipping.

The answer: no

run (net10.0) passed failed skipped total
vanilla control 770 0 30 800
Dapper.AOT enabled 729 41 30 800

Scorecard: handled 432 of 736 enabled call-sites (76 unsupported API, 203 refused with diagnostics, 25 skipped silently).

The A/B that matters: the round-12 generator (b411eb4) was packed and run against this same rig and also reads 432 of 736. So #208#217 changed interception not at all, and moved behaviour only upward (677 → 729). The type-handler work, the DAP056 non-goal and the scorecard split cost no coverage.

All 41 divergences are known gaps at ×2 providers — TypeHandlerTests ×4, LiteralTests ×4, MiscTests ×4, ParameterTests ×3, AsyncTests ×3, plus Transaction/DataReader singles and one new DateTimeOnlyTests since Dapper #2228. No new failure class.

The rig had to be rebuilt

It was local-only on the Windows box and did not survive the move. The step-by-step is now at the top of harness-baseline.md and is Linux-shaped: databases from the Dapper suite's own docker compose, the SqlServerConnectionString env var, the local feed and 1.0.0-g package version, and — the part that is easy to lose a morning to — the .globalconfig severity downgrades, without which DAP036/DAP037 stop the build outright on the scalar-result gaps (enum, char, TimeSpan, DateOnly, TimeOnly, dynamic). That they are errors at all, on shapes vanilla handles fine, is still a live severity question.

Also needed: -p:NoWarn=NU1902 on every build, because the Dapper repo runs warnings-as-errors and a published advisory against a SourceLink dependency otherwise fails the restore. Nothing to do with us.

One thing recorded rather than smoothed over

Round 12's 533/725 is not reproducible on this rig — and the round-12 generator does not reproduce it either, so it is not a regression, it is rig configuration that no longer exists to inspect. DAP051 (generic-by-containment) firing 244 times is the likeliest candidate, but that is a hypothesis and is written down as one.

The durable lesson is in the note: absolute call-site counts are rig-specific — compare within a rig, never across. That is exactly what the A/B above does, which is why it is trustworthy while the 533-vs-432 comparison is not.

Also corrected: the preamble still listed round 14's [module: UseRuntimeTypeHandlers] as part of the setup. #206 was closed; the attribute does not exist.

Pre-release verification, and the rig had to be rebuilt first: the old one was
local-only on the Windows box and did not survive the move. The step-by-step for
standing it up from nothing is now at the top of harness-baseline.md, Linux-shaped -
databases from the Dapper suite's own docker compose, the SqlServerConnectionString
env var, the local feed, and the .globalconfig severity downgrades without which
DAP036/DAP037 stop the build outright.

Round 15, net10.0: **729 passed / 800**, 41 failed, against a vanilla control of
770/800 on the same box. Scorecard: handled 432 of 736 enabled call-sites. All 41
divergences are known gaps at x2 providers - TypeHandler, Literal, Misc, Parameter,
Async, plus scattered singles - so no new failure class, and the pass count is up on
round 12's 677.

The question this was run to answer: **the round-12 generator (b411eb4), packed and
run against this same rig, also reads 432 of 736.** So #208-#217 changed interception
not at all, and moved behaviour only upward.

Recorded honestly rather than smoothed over: the 533/725 in round 12 is *not*
reproducible here, and since the round-12 generator does not reproduce it either, the
difference is rig configuration that no longer exists to inspect. DAP051 firing 244
times is the likely candidate but is a hypothesis. The durable lesson is in the note:
absolute call-site counts are rig-specific, so compare within a rig, never across.

Also corrected: the preamble still described round 14's [module: UseRuntimeTypeHandlers]
as part of the setup, and that attribute does not exist - #206 was closed.
@mgravell
mgravell merged commit 46ae079 into main Sep 11, 2026
2 checks passed
@mgravell
mgravell deleted the harness-round15 branch September 11, 2026 13:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant